#ifndef KADDFILEBUTTON_H
#define KADDFILEBUTTON_H

#include <QPushButton>
#include <QFileDialog>
#include "../screencapsdk_global.h"

namespace kdk {

/** @defgroup PushbuttonModule
  */

class KAddFileButtonPrivate;

/**
 * @brief 选择文件的按钮
 * @since 2.4
 */
class SCREENCAPSDK_EXPORT KAddFileButton :public QPushButton
{
    Q_OBJECT
public:
    KAddFileButton(QWidget* parent=nullptr);

    /**
     * @brief 设置文本
     * @param str
     */
    void setText(QString str);

    /**
     * @brief 获取filedialog
     * @return QFileDialog
     */
    QFileDialog *fileDialog();

    /**
     * @brief 将文件对话框中使用的过滤器设置为给定的过滤器。
     * @param filter
     */
    void setNameFilter(const QString &filter);

    /**
     * @brief 设置文件对话框中使用的过滤器。
     * @param filters
     */
    void setNameFilters(const QStringList &filters);

protected:
    void paintEvent(QPaintEvent *event);
    bool eventFilter(QObject *watched, QEvent *event);
    void mouseMoveEvent(QMouseEvent *event);
    void mousePressEvent(QMouseEvent *event);
    void mouseReleaseEvent(QMouseEvent *event);

private:
    KAddFileButtonPrivate* const d_ptr;
    Q_DECLARE_PRIVATE(KAddFileButton)
};

}

#endif // KADDFILEBUTTON_H
